/*store权限明细部分*/
import http from '../../../tool/http'
import api from '../../../tool/api'

export default {
    state: {//状态
        detailTotalData: [],//权限数据盒子
    },
    mutations: {//（修改/操作）状态
        /*赋值*/
        getDetailTotalData(state, arr) {
            /*数据加工*/
            arr.map(outItem => {
                /*数据配对*/
                arr.map(inItem => {
                    if (outItem.authParentId === inItem.authId) {
                        outItem.authParentName = inItem.authName;//获取父级权限的名称
                    }
                });
                /*数据调整*/
                if (!outItem.authUrl) outItem.authUrl = '无权限字段';
                if (!outItem.authParentId) outItem.authParentId = '无父级权限';
                if (!outItem.authParentName) outItem.authParentName = '无父级权限';
            });

            /*数据去重*/
            /**去重的根据：id为唯一，但在其他接口传递权限是传递的字符（权限名称），那么也就需要名称也为唯一的**/
            arr.map((outData, index) => {
                arr.forEach(inData => {
                    /*遍历*//**删除名字重复的**/
                    if (outData.authId !== inData.authId && outData.authName === inData.authName) {/*查询的对象id不能相同*//**（防止自己删自己）**/
                        if (outData.authLevel === inData.authLevel) {//权限级别相同
                            arr.splice(index, 1);//删
                        } else {//权限级别不同
                            if (outData.authLevel > inData.authLevel) {/*权限越小，级别越高*/
                                /**此处根据主观意识决定**/
                                //此处的查询者级别小于（上面只是数字大，代表级别小）被查询者，故，删
                                arr.splice(index, 1);
                            }
                        }
                    }
                })
            });
            /*修改数据*/
            state.detailTotalData = [...arr];
        }
    },
    actions: {//1.异步执行（修改/操作）状态  2.异步执行mutations里面的方法
        /*获取数据*/
        getDetailTotalDataAction({commit}) {
            return http({
                url: api.getPermissions + `?page=1&pageSize=1000`,//get传递参数
                method: 'get',
            }).then(msg => {
                if (msg.data.code === 200) {
                    commit('getDetailTotalData', msg.data.data)
                }
            }).catch((err) => {
                console.log(err);
            })
        }
    },
    getters: {//加工状态，并传递给外界
        detailTotalData(state) {
            return state.detailTotalData
        }
        /*nameInfo(state){
            return "姓名:"+state.name
        },
        fullInfo(state,getters){
            return getters.nameInfo+'年龄:'+state.age
        }*/
    }
}
